﻿using System.Xml.Linq;
using 匿名类;

object student1 = new Student()
{
    name = "123",
    id = 1,
    address = "深圳保安",
};


//匿名类属性成员必须在初始化时设定值，之后无法重新赋值，不能给匿名类声明方法
//匿名类
object student2 = new
{
    a = 1,
    b = 2,
    c = 3,
};
//编辑器会报错，因为c#是强类型语言，匿名类需要在编译后生成类之后才能访问成员
//Console.WriteLine(student1.a);

dynamic student3 = new
{
    a = 1,
    b = 2,
    c = 3,
};
//不会报错，因为dynamic动态类型可以饶过编译器的检查
Console.WriteLine(student3.a);

//var推断类型

//扩展方法
//1.扩展，扩充，让已经存在的功能变得更加强大，添加新的处理逻辑
//2.已经存在的方法，正常调用，扩展的东西不影响已经存在的功能
//3.如果需求变更，需要支持另外的功能

Class1 class1 = new Class1();
class1.Study();
class1.Study();


//可以为任何类型添加扩展方法吗？可以
//但是注意，扩展方法有继承性
//扩展父类，子类都将拥有功能，所以尤其要注意object基类型的情况，因此要视情况而处理
//会造成一定的类型功能的污染

class1.Study<int>(123);

int a = 1;
a.Study();

class Student
{
    public string name { get; set; }
    public int id { get; set; }
    public string address { get; set; }
}